package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.Setmeal;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface SetmealDao {

    /**
     * 将套餐基本信息存到数据库
     * @param setmeal  套餐的数据  没有id
     */
    void add(Setmeal setmeal);


    /**
     * 通过传过来的检查套餐的id，添加他的外键关系
     * @param setmealId   检查套餐
     * @param checkgroupId   检查组id
     */
    void setSetmealAndCheckGroupId(@Param("setmealId") Integer setmealId,@Param("checkgroupId") Integer checkgroupId);

    /**
     * 体检套餐的模糊查询方法
     *
     * @param queryString 模糊查询的数据
     * @return 所有的对象
     */
    Page<Setmeal> findPage(String queryString);

    /**
     * 查询检查套餐的基本信息
     * @param id 检查套餐的id
     * @return
     */
    Setmeal findById(Integer id);

    /**
     * 通过检查套餐查出首选的检查组
     *
     * @param id 检查套餐的id
     * @return
     */
    List<Integer> findGroupIdsBysetmealId(Integer id);

    /**
     * 修改套餐基本信息
     * @param setmeal
     */
    void update(Setmeal setmeal);

    /**
     * 删除套餐的外键关系
     * @param setmealId
     */
    void deleteBySetmealId(Integer setmealId);

    /**
     * 删除套餐
     * @param id
     */
    void delete(Integer id);

    /**
     * 查询所有的套餐
     * @return 所有的套餐
     */
    List<Setmeal> findAll();

    /**
     * 多包查询中的一步，将数据返回给其他的配置文件中
     * @param id
     * @return
     */
    Setmeal findById1(Integer id);

    /**
     * 查询每种套餐的预约数量
     * @return map集合
     */
    List<Map<String, Object>> findSetmealCount();
}
